<?php
namespace jy_jd;
defined('BY_JYA') or exit('error');
/*
	分销佣金
	分销插件所有金额字段均保存整形，精确到分。显示时，除以100然后保留两位小数即可
	佣金比例字段保存整形，值为万分数，相当于百分数的精确到小数点后2位。即展示到前端时，需要除以100，换算成百分数显示
*/
class refund extends \plugin{

	public $status=array(
		'0'=>'待审核',
		'1'=>'审核通过',
		'2'=>'已退款',
		'4'=>'被拒绝',
	);
	/*
		检查订单是否支持退款
		订单支持退款的条件
			订单商品支持退款
			订单状态为已完成
			订单完成时间不超过七天
	*/
	public function check_order_rerefund($order_id=0,$iserror=''){//$iserror 报错
		if($order_id){
			$order=$this->pdo_get('order',array('uniacid'=>$_SESSION['uniacid'],'id'=>$order_id));
			if(!$order){
				if($iserror){
					exi('订单不存在，退款失败！','error');
				}else{
					return false;
				}
			}
			if(!$order['ispay']){
				if($iserror){
					exi('该订单未付款，不支持退款！','error');
				}else{
					return false;
				}
			}
			$intime24=strtotime($order['intime'])+24*3600;
			if($intime24<time()){
				if($iserror){
					exi('该订单已过最迟退款时间，不支持退款！','error');
				}else{
					return false;
				}
			}
			return true;
		}
		return false;
	}
	
	/*
		退款打款
	*/
	public function refund_pay($refund_id){
		//执行退款操作
		$order=$this->pdo_get('order',array('uniacid'=>$_SESSION['uniacid'],'id'=>$refund_id));
		if(!$order){
			return false;
		}
		if($order['status']!=3){
			exi('退款单不符合打款要求！','error');
		}
		if(!$order['paytype'] || $order['paytype']=='credit'){
			//支付方式为余额支付，退款至余额
			$pay_out_id=model('core/member')->add_credit2($order['mid'],$order['fee'],'订单退款');
		}elseif($order['paytype']=='wechat'){
			$payinfo=pdo_get('core_paylog',array('uniacid'=>$_SESSION['uniacid'],'id'=>$order['pay_id']));
			$transaction_id=$order['transid']?:$payinfo['transaction_id'];
			if(!$transaction_id){
				exi('退款失败，没有微信支付号！','error');
			}
			$payinfo['transid']=$transaction_id;
			$payinfo['money']=$order['fee'];
			$payinfo['remark']='订单退款';
			$pay_out_id=model('core/member')->refund_out($order['mid'],$payinfo);
		}else{
			$params=array(
				'money'=>$order['fee'],
				'remark'=>'订单退款',
			);
			$pay_out_id=model('core/member')->pay_out($order['mid'],$params);
		}
		$update=array(
			'status'=>4,
			'tui_paytime'=>TIMESTAMP,
			'pay_out_id'=>$pay_out_id,
		);
		$this->pdo_update('order',$update,array('uniacid'=>$_SESSION['uniacid'],'id'=>$order['id']));
		return false;
	}
	/*
		退款押金
	*/
	public function refund_payyafee($orderid){
		//执行退款操作
		$order=$this->pdo_get('order',array('uniacid'=>$_SESSION['uniacid'],'id'=>$orderid));
		if(!$order){
			return false;
		}
		if($order['status']!=6 || $order['yafee']<=0){
			exi('订单不符合退款押金要求！','error');
		}
		if(!$order['paytype'] || $order['paytype']=='credit'){
			//支付方式为余额支付，退款至余额
			$pay_out_id=model('core/member')->add_credit2($order['mid'],$order['yafee'],'退款押金');
		}elseif($order['paytype']=='wechat'){
			$payinfo=pdo_get('core_paylog',array('uniacid'=>$_SESSION['uniacid'],'id'=>$order['pay_id']));
			$transaction_id=$order['transid']?:$payinfo['transaction_id'];
			if(!$transaction_id){
				exi('退款失败，没有微信支付号！','error');
			}
			$payinfo['transid']=$transaction_id;
			$payinfo['money']=$order['yafee'];
			$payinfo['remark']='订单退款';
			$pay_out_id=model('core/member')->refund_out($order['mid'],$payinfo,$noexi);
		}else{
			$params=array(
				'money'=>$order['yafee'],
				'remark'=>'订单退款',
			);
			$pay_out_id=model('core/member')->pay_out($order['mid'],$params);
		}
		return true;
	}
}